import { faker } from '@faker-js/faker';
import { eventHandler, getRouterParam, readBody } from 'h3';
import { verifyAccessToken } from '~/utils/jwt-utils';
import {
  sleep,
  unAuthorizedResponse,
  useResponseSuccess,
  useResponseError,
} from '~/utils/response';

export default eventHandler(async (event) => {
  const userinfo = verifyAccessToken(event);
  if (!userinfo) {
    return unAuthorizedResponse(event);
  }

  await sleep(600);

  const id = getRouterParam(event, 'id');
  const body = await readBody(event);
  const { brand, model, color, purchaseDate, insuranceDue, inspectionDue, status, fuelConsumption } = body;  // 使用驼峰命名

  // 参数校验
  if (!status) {
    return useResponseError('车辆状态不能为空');
  }

  // 校验油耗范围
  if (fuelConsumption !== undefined && fuelConsumption !== null) {  // 使用驼峰命名
    if (fuelConsumption < 0 || fuelConsumption > 100) {  // 使用驼峰命名
      return useResponseError('标准油耗应在0-100升/百公里之间');
    }
  }

  // 模拟更新车辆
  const updatedVehicle = {
    vehicleId: Number(id),  // 使用驼峰命名，对应数据库字段vehicle_id
    licensePlate: '京A1234', // 车牌号不可修改，使用驼峰命名，对应数据库字段license_plate
    brand: brand || '',
    model: model || '',
    color: color || '',
    purchaseDate: purchaseDate || null,  // 使用驼峰命名，对应数据库字段purchase_date
    insuranceDue: insuranceDue || null,  // 使用驼峰命名，对应数据库字段insurance_due
    inspectionDue: inspectionDue || null,  // 使用驼峰命名，对应数据库字段inspection_due
    status: status || '可用',
    fuelConsumption: fuelConsumption || null,  // 使用驼峰命名，对应数据库字段fuel_consumption
    driverName: faker.helpers.arrayElement(['张三', '李四', '王五', '赵六']),  // 使用驼峰命名，对应数据库字段driver_name
  };

  return useResponseSuccess(updatedVehicle);
});
